package com.shujia.day09.bao2;
/*
    返回值
        基本类型: 当基本数据类型作为方法的返回值类型的时候，方法中return具体类型的数值即可
        引用类型:
            数组：当数组作为方法的返回值类型的时候，将来需要在方法中return该一个数组的地址值
            具体的类：当类作为方法的返回值类型的时候，将来需要在方法中return该一个该类的对象
            抽象类：当抽象类作为方法的返回值类型的时候，将来需要在方法中return该一个该类的具体子类对象
            接口：当接口作为方法的返回值类型的时候，将来需要在方法中return该一个实现了该接口的具体子类对象
 */
interface Inter1{
    void fun1();
}

class Inter1Impl implements Inter1{
    @Override
    public void fun1() {
        System.out.println("好好学习，天天向上！");
    }
}

class Student3{
    //当接口作为方法的返回值类型的时候，将来需要在方法中return该一个实现了该接口的具体子类对象
    public Inter1 show1(){
        return new Inter1Impl();
    }
}


public class Demo3 {
    public static void main(String[] args) {
//        Student3 student3 = new Student3();
//        Inter1 i = student3.show1(); //Inter1 i = new Inter1Impl()
//        i.fun1();
//        Student3 s = new Student3();
//        Inter1 i = new Student3().show1(); //Inter1 i = new Inter1Impl()

        //当一个方法结果是一个对象的时候，可以继续.调用返回对象中的其它方法
        //像这种对象调用方法继续调用的编程方式，称之为叫做链式调用【链式编程】
        new Student3()
                .show1()
                .fun1();
    }
}
